﻿#define _CRT_SECURE_NO_WARNINGS

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

//class Solution {
//public:
//    int singleNumber(vector<int>& nums) {
//        int ret = 0;
//        for (auto e : nums)
//        {
//            ret ^= e;
//        }
//        return ret;
//    }
//};


//class Solution {
//public:
//    vector<vector<int>> generate(int numRows) {
//        vector<vector<int>> vv;
//        vv.resize(numRows);
//        //给每一行开空间
//        //把每一行的头和尾都初始化为1
//        for (size_t i = 0; i < vv.size(); ++i)
//        {
//            vv[i].resize(i + 1, 0);
//            vv[i][0] = vv[i][vv[i].size() - 1] = 1;
//        }
//
//        //算中间值
//        for (size_t i = 0; i < vv.size(); ++i)
//        {
//            for (size_t j = 0; j < vv[i].size(); ++j)
//            {
//                if (vv[i][j] == 0)
//                {
//                    vv[i][j] = vv[i - 1][j] + vv[i - 1][j - 1];
//                }
//            }
//        }
//        return vv;
//
//    }
//};



//class Solution {
//public:
//    int singleNumber(vector<int>& nums) {
//        int a = 0, b = 0;
//        for (int x : nums) {
//            b = (b ^ x) & ~a;
//            a = (a ^ x) & ~b;
//        }
//        return b;
//    }
//};


//class Solution {
//public:
//    int singleNumber(vector<int>& nums) {
//        int ans = 0;
//        //考虑每一列
//        for (int i = 0; i < 32; i++)
//        {
//            int count = 0;
//            //考虑每一个数
//            for (int j = 0; j < nums.size(); j++)
//            {
//                //当前位是否是 1
//                if (((nums[j] >> i) & 1) == 1)
//                {
//                    count++;
//                }
//            }
//            //1 的个数是否是 3 的倍数
//            if (count % 3 != 0)
//            {
//                ans = ans | (1 << i);
//            }
//
//            
//        }
//        return ans;
//    }
//};



class Solution {
public:
    int MoreThanHalfNum_Solution(vector<int> numbers) {
        if (!(numbers.empty()))
        {
            sort(numbers.begin(), numbers.end());
            int mid = numbers[numbers.size() / 2];
            int count = 0;
            for (auto e : numbers)
            {
                if (e == mid)
                {
                    ++count;
                }
            }

            if (count > numbers.size() / 2)
            {
                return mid;
            }
            return 0;
        }
        
    }
};



int main()
{

    Solution sl;
    vector<int> v;
    v.push_back(2);
    v.push_back(2);
    v.push_back(3);
    v.push_back(2);
    //v.push_back(2);

    cout << sl.MoreThanHalfNum_Solution(v) << endl;
    



	return 0;
}




